﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CapaDTO;
using MySql.Data.MySqlClient;


namespace CapaConexion
{
    public class DAOCliente
    {
        Error error = new Error();

        public Cliente obtenerCliente(int telefono)
        {
            Cliente auxCliente = new Cliente();
            String cadena = "Server=localhost;User id=root;Database=pizzeria;";
            MySqlConnection Conexion = new MySqlConnection(cadena);
            MySqlCommand command = Conexion.CreateCommand();
            command.CommandText = "SELECT * FROM cliente WHERE Telefono = '" + telefono + "';";

            try
            {
                Conexion.Open();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error al abrir la Conexion " + ex.Message);
            }

            MySqlDataReader reader = command.ExecuteReader();
            
            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    auxCliente.Resultado = "1";
                    auxCliente.Nombre = reader["Nombre"].ToString();
                    auxCliente.Apellido = reader["Apellido"].ToString();
                    auxCliente.Direccion = reader["Direccion"].ToString();
                    auxCliente.Email = reader["Email"].ToString();
                    
                        string auxFono = reader["Telefono"].ToString();
                        auxCliente.Telefono = Int32.Parse(auxFono);

                }
            }
            else
            {
                auxCliente.Resultado = "0";
            }

            return auxCliente;


        }


        public Error insertarCliente(Cliente nuevo)
        {
            String cadena = "Server=localhost;User id=root;Database=pizzeria;";
            MySqlConnection Conexion = new MySqlConnection(cadena);
            MySqlCommand command = Conexion.CreateCommand();
            command.CommandText = "INSERT INTO cliente VALUES("+nuevo.Telefono+","+"'"+ nuevo.Nombre+"'" +","+"'"+nuevo.Apellido+"'"+","+"'"+nuevo.Direccion+"'"+","+"'"+nuevo.Email+"'"+");"; 
            try
            {
                Conexion.Open();
                command.ExecuteNonQuery();
            }
            /*Se hace un catch a MySqlException para verificar si hay algún error con la sentencia SQL realizada*/
            catch(MySqlException mySqlEx)
            {
                /*Como sabemos que el código de error 1062 significa que "la llave primaria está duplicada al insertar"
                 controlamos ese error ingresando una descripción del error
                 */
                if (mySqlEx.Number == 1062) 
                {
                    error.CodError = mySqlEx.Number;
                    error.DescError = "El teléfono ingresado ya se encuentra en la base de datos";
                    return error;
                }
                /*Si existe otro error enviamos su descripción y su código para mostrar en pantalla y saber cuál es el error*/
                error.CodError = mySqlEx.Number;
                error.DescError = "Error: " + mySqlEx.Message;
                return error;
            }
            /* Con Exception controlamos cualquier otra excepción que pueda ocurrir */
            catch (Exception ex)
            {
                error.DescError = "Error: " + ex.Message;
                return error;
            }
            /*Si no hay excepciones enviamos un código de error 0 que significa que no hay errores*/
            error.CodError = 0;
            error.DescError = "No hay errores";
            return error;
        }

        public Error modificarCliente(Cliente nuevo)
        {
            String cadena = "Server=localhost;User id=root;Database=pizzeria;";
            MySqlConnection Conexion = new MySqlConnection(cadena);
            MySqlCommand command = Conexion.CreateCommand();
            command.CommandText = "UPDATE cliente SET Nombre = '" + nuevo.Nombre + "', Apellido = '" + nuevo.Apellido + "', Direccion = '" + nuevo.Direccion + "', Email = '" + nuevo.Email + "' WHERE Telefono = " + nuevo.Telefono + ";";
            try
            {
                Conexion.Open();
                command.ExecuteNonQuery();
            }
            /*Se hace un catch a MySqlException para verificar si hay algún error con la sentencia SQL realizada*/
            catch (MySqlException mySqlEx)
            {
                error.CodError = mySqlEx.Number;
                error.DescError = "Error: " + mySqlEx.Message;
                return error;
            }
            /*Con Exception controlamos cualquier otra excepción que pueda ocurrir*/
            catch (Exception ex)
            {
                error.DescError = "Error: " + ex.Message;
                return error;
            }
            /*Si no hay excepciones enviamos un código de error 0 que significa que no hay errores*/
            error.CodError = 0;
            error.DescError = "No hay errores";
            return error;
        }

       public Error eliminarCliente(Cliente nuevo)
        {
            String cadena = "Server=localhost;User id=root;Database=pizzeria;";
            MySqlConnection Conexion = new MySqlConnection(cadena);
            MySqlCommand command = Conexion.CreateCommand();
            command.CommandText = "DELETE FROM cliente WHERE Telefono = " + nuevo.Telefono + ";";
            try
            {
                Conexion.Open();
                command.ExecuteNonQuery();
            }
            /*Se hace un catch a MySqlException para verificar si hay algún error con la sentencia SQL realizada*/
            catch (MySqlException mySqlEx)
            {
                error.CodError = mySqlEx.Number;
                error.DescError = "Error: " + mySqlEx.Message;
                return error;
            }
            /*Con Exception controlamos cualquier otra excepción que pueda ocurrir*/
            catch (Exception ex)
            {
                error.DescError = "Error: " + ex.Message;
                return error;
            }
            /*Si no hay excepciones enviamos un código de error 0 que significa que no hay errores*/
            error.CodError = 0;
            error.DescError = "No hay errores";
            return error;
        }
    }
}
